Bugfix: Implement egress firewall cidr validation#297
Open
elivlo wants to merge 2 commits into
Open
Conversation
The CloudStack API does not reject 0.0.0.0/0 as an egress firewall CIDR but silently replaces it with the network's own CIDR. This causes a permanent drift between the Terraform state (which stores 0.0.0.0/0) and the actual API state (which returns the network CIDR), resulting in Terraform perpetually planning to recreate the resource. Validate early in verifyEgressFirewallRuleParams to surface a clear error before the API call is made.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR addresses a CloudStack egress firewall drift issue by rejecting the special CIDR 0.0.0.0/0 in cidr_list, which CloudStack rewrites to the network CIDR and can cause perpetual Terraform diffs/recreates.
Changes:
- Add validation in egress firewall rule parameter verification to disallow
0.0.0.0/0incidr_list. - Add unit tests covering the new CIDR validation behavior (disallow
0.0.0.0/0, allow a normal subnet CIDR). - Ignore a local
.worktrees/directory via.gitignore.
Reviewed changes
Copilot reviewed 2 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| cloudstack/resource_cloudstack_egress_firewall.go | Adds rule-level validation rejecting 0.0.0.0/0 for egress firewall cidr_list (and cleans up unused params). |
| cloudstack/resource_cloudstack_egress_firewall_test.go | Adds unit tests for the new CIDR validation behavior. |
| .gitignore | Ignores .worktrees/ directory. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@elivlo the 0.0.0.0/0 was a very nice hack I used several times to avoid specification of specific subnet, now it's gone :-D |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hi :)
This PR adds validation to the egress firewall for the set
cidr_list. The set currently allows the cidr0.0.0.0/0that get is rewritten to the cidr of the network. So the resource gets recreated everytime terraform runs.So this PR will disallow the cidr
0.0.0.0/0.